﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Maestro_Proveedores.clases.almacen
{
    public class Registro : ICloneable
    {


        public Registro()
        {

            this.Id_semana = 0;
            this.Demanda = 0;
            this.Semana = 0;
            this.Pronostico = 0;
            this.Et = 0;
            this.Etabsoluto = 0;
            this.Etcuadrado = 0;
            this.Ape = 0;
            this.Ape1 = 0;
            Cod_material = "";
            Desc_material = "";
            Cod_unid_medida = 0;
            Unid_medida = "";
        }


        public Registro(int semana, int demanda)
        {
            this.id_semana = 0;
            this.Demanda = demanda;
            this.Semana = semana;
            this.Pronostico = 0;
            this.Et = 0;
            this.Etabsoluto = 0;
            this.Etcuadrado = 0;
            this.Ape = 0;
            this.Ape1 = 0;
            Cod_material = "";
            Desc_material = "";
            Cod_unid_medida = 0;
            Unid_medida = "";
        }

        public Registro(Registro reg)
        {
            this.Id_semana = reg.Id_semana;
            this.Demanda = reg.Demanda;
            this.Semana = reg.Semana;
            this.Pronostico = reg.Pronostico;
            this.Et = reg.Et;
            this.Etabsoluto = reg.Etabsoluto;
            this.Etcuadrado = reg.Etcuadrado;
            this.Ape = reg.Ape;
            this.Ape1 = reg.Ape1;
            Cod_material = reg.Cod_material;
            Desc_material = reg.Desc_material;
            Cod_unid_medida = reg.Cod_unid_medida;
            Unid_medida = reg.Unid_medida;
        }

        private int id_semana;

        public int Id_semana
        {
            get { return id_semana; }
            set { id_semana = value; }
        }


        private string cod_clase;

        public string Cod_clase
        {
            get { return cod_clase; }
            set { cod_clase = value; }
        }

        private string cod_material;

        public string Cod_material
        {
            get { return cod_material; }
            set { cod_material = value; }
        }
        private string desc_material;

        public string Desc_material
        {
            get { return desc_material; }
            set { desc_material = value; }
        }
        private int cod_unid_medida;

        public int Cod_unid_medida
        {
            get { return cod_unid_medida; }
            set { cod_unid_medida = value; }
        }
        private string unid_medida;

        public string Unid_medida
        {
            get { return unid_medida; }
            set { unid_medida = value; }
        }

        private int _semana;

        public int Semana
        {
            get { return _semana; }
            set { _semana = value; }
        }

        public override string ToString()
        {
            return this.Semana.ToString();
        }

        public int Compare(object lhs, object rhs)
        {
            Registro lhsRegistro = (Registro)lhs;
            Registro rhsRegistro = (Registro)rhs;
            if (lhsRegistro.Semana < rhsRegistro.Semana)
            {
                return -1;
            }

            else if (lhsRegistro.Semana > rhsRegistro.Semana)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }

        public int CompareTo(object rhs)
        {
            return Compare(this, rhs);
        }


        private int _demanda;

        public int Demanda
        {
            get { return _demanda; }
            set { _demanda = value; }
        }
        private double _pronostico;

        public double Pronostico
        {
            get { return _pronostico; }
            set { _pronostico = value; }
        }
        private double _et;

        public double Et
        {
            get { return _et; }
            set { _et = value; }
        }
        private double _etabsoluto;

        public double Etabsoluto
        {
            get { return _etabsoluto; }
            set { _etabsoluto = value; }
        }
        private double _etcuadrado;

        public double Etcuadrado
        {
            get { return _etcuadrado; }
            set { _etcuadrado = value; }
        }
        private double _ape;

        public double Ape
        {
            get { return _ape; }
            set { _ape = value; }
        }
        private double _ape1;

        public double Ape1
        {
            get { return _ape1; }
            set { _ape1 = value; }
        }

        public object Clone()
        {
            return MemberwiseClone(); ;
        }


    }
}
